First of all, I’m going to assume you already have httpd and php installed. If you don’t have them already you should install them now. I recommend Jason Litka’s Yum Repository.
This guide is written with bash comments, so the whole text block below can be copied and pasted into an install.sh file if you’d rather not go through step by step. I wouldn’t recommend it though, as something could always go wrong, and it could be challenging hunting down the problem in that massive wall of output lines!
#!/bin/bash # Mplayer Codecs # Switch to working directory cd /usr/local/src # Download the codec files needed wget http://www3.mplayerhq.hu/MPlayer/releases/codecs/essential-amd64-20071007.tar.bz2 # Extract the codec files bunzip2 essential-amd64-20071007.tar.bz2; tar xvf essential-amd64-20071007.tar # Create a directory for the codecs & import them mkdir /usr/local/lib/codecs/ mv essential-amd64-20071007/* /usr/local/lib/codecs/ chmod -R 755 /usr/local/lib/codecs # FLVTool2 # Switch to working directory cd /usr/local/src # Download the source files needed wget http://rubyforge.org/frs/download.php/17497/flvtool2-1.0.6.tgz # Extract the Source files tar zxvf flvtool2-1.0.6.tgz # Compile cd /usr/local/src/flvtool2-1.0.6 ruby setup.rb config ruby setup.rb setup ruby setup.rb install # LAME MP3 Encoder # Switch to working directory cd /usr/local/src # Download the source files needed wget http://downloads.sourceforge.net/lame/lame-398-2.tar.gz # Extract the Source files tar zxvf lame-398-2.tar.gz # Compile cd /usr/local/src/lame-398-2 ./configure make && make install # libOGG # Switch to working directory cd /usr/local/src # Download the source files needed wget http://downloads.xiph.org/releases/ogg/libogg-1.1.4rc1.tar.gz # Extract the Source files tar zxvf libogg-1.1.4rc1.tar.gz # Compile cd /usr/local/src/libogg-1.1.4rc1 ./configure make && make install # libVorbis # Switch to working directory cd /usr/local/src # Download the source files needed wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.3.tar.gz # Extract the Source files tar zxvf libvorbis-1.2.3.tar.gz # Compile cd /usr/local/src/libvorbis-1.2.3 ./configure make && make install # liba52 # Switch to working directory cd /usr/local/src # Download the source files needed wget http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz # Extract the Source files tar zxvf a52dec-0.7.4.tar.gz # Compile cd /usr/local/src/a52dec-0.7.4 ./configure --enable-shared=PKGS make && make install # libFAAD2 # Switch to working directory cd /usr/local/src # Download the source files needed wget http://downloads.sourceforge.net/faac/faad2-2.7.tar.gz # Extract the Source files tar zxvf faad2-2.7.tar.gz # Compile cd /usr/local/src/faad2-2.7 autoreconf -vif ./configure --disable-drm --disable-mpeg4ip make && make install # libFAAC # Switch to working directory cd /usr/local/src # Download the source files needed wget http://downloads.sourceforge.net/faac/faac-1.28.tar.gz # Extract the Source files tar zxvf faac-1.28.tar.gz # Compile cd /usr/local/src/faac-1.28 ./bootstrap ./configure --disable-mp4v2 make && make install # YASM (required by x264) # Switch to working directory cd /usr/local/src # Download the source files needed wget http://www.tortall.net/projects/yasm/releases/yasm-0.7.0.tar.gz # Extract the Source files tar zxvf yasm-0.7.0.tar.gz # Compile cd /usr/local/src/yasm-0.7.0 ./configure make && make install # x264 daily snapshot # Switch to working directory cd /usr/local/src # Download the source files needed wget http://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20090901-2245.tar.bz2 # Extract the Source files bzip2 -d x264-snapshot-20090901-2245.tar.bz2; tar xvf x264-snapshot-20090901-2245.tar # Compile cd /usr/local/src/x264-snapshot-20090901-2245 ./configure --enable-mp4-output --enable-shared --enable-pthread make && make install # XVID # Switch to working directory cd /usr/local/src # Download the source files needed wget http://downloads.xvid.org/downloads/xvidcore-1.2.2.tar.gz # Extract the Source files tar zxvf xvidcore-1.2.2.tar.gz # Compile cd /usr/local/src/xvidcore/build/generic ./configure make && make install # Install SVN/Ruby yum install -y subversion ruby ncurses-devel # Fix few Lib issues for next steps echo "/usr/local/lib" >> /etc/ld.so.conf ldconfig -v # MPlayer Core # Switch to working directory cd /usr/local/src # Get the latest version from the subversion svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer # Compile cd /usr/local/src/mplayer ./configure make && make install # FFMPEG # Switch to working directory cd /usr/local/src # Get the latest version from the subversion svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg # Compile cd /usr/local/src/ffmpeg ./configure --enable-gpl --enable-postproc --enable-nonfree --enable-postproc --enable-libfaad --enable-avfilter --enable-pthreads --enable-libxvid --enable-libx264 --enable-libmp3lame --enable-libfaac --disable-ffserver --disable-ffplay --enable-shared echo '#define HAVE_LRINTF 1' >> config.h make && make install # Finalize the codec setups ln -s /usr/local/lib/libavformat.so.50 /usr/lib/libavformat.so.50 ln -s /usr/local/lib/libavcodec.so.51 /usr/lib/libavcodec.so.51 ln -s /usr/local/lib/libavutil.so.49 /usr/lib/libavutil.so.49 ln -s /usr/local/lib/libmp3lame.so.0 /usr/lib/libmp3lame.so.0 ln -s /usr/local/lib/libavformat.so.51 /usr/lib/libavformat.so.51 # Few tasks before compiling FFMPEG-PHP yum install -y automake autoconf libtool # FFmpeg-php # Switch to working directory cd /usr/local/src # Download the source files needed wget http://downloads.sourceforge.net/ffmpeg-php/ffmpeg-php-0.6.0.tbz2 # Extract the Source files bunzip2 ffmpeg-php-0.6.0.tbz2; tar xvf ffmpeg-php-0.6.0.tar # Compile cd /usr/local/src/ffmpeg-php-0.6.0 phpize ./configure make make install # Add FFMPEG-PHP as an extension of PHP # Add this line to your php.ini file (Check the correct path of php.ini) echo "extension=ffmpeg.so" >> /etc/php.ini # Restart Apache to load FFMPEG-PHP service httpd restart # Cleanup cd .. rm -f -r ./ffmpeg-php
Wow! That was long…glad that’s over. Anyway, you should check and make sure it worked by running phpinfo() in php and searching for a block called ‘ffmpeg’. If anyone has any suggestions for improvements to the script or other encoders I should add let me know.